home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / -seriously_amiga- / shareware / programming / amos / kryjeldemo / kryjel2.amos / kryjel2.amosSourceCode
AMOS Source Code  |  1997-12-01  |  23KB  |  751 lines

  1. '*************************** 
  2. '*    AMOS Professional�   *               
  3. '*                         * 
  4. '*         KRYJEL          *                 
  5. '*                         *               
  6. '* ï¿½1996,1997 Mike Baron   *                 
  7. '*                         * 
  8. '*World of Kryjel Generator* 
  9. '*for Characters...        * 
  10. '*************************** 
  11. 'HISTORY!
  12. '        August 15th, 1996 Project Birth (Alpha) 
  13. '               27th       Added screen pause sub  
  14. '               30th       Finished intro.,  
  15. '                          Began Using Amos Interface, started Buttons 
  16. '     September  8th FINISHED BUTTONS QUIT and MAP ROUTINES Do NE  
  17. '               16th       Finished roller routine   
  18. '                          Cleaned up texts, started Character Sheet.  
  19. '               20th       Started work on Char.Sheet using zones only!  
  20. '               21st       Char Screen fleshed out, added SUPERHERO gens   
  21. '               22nd       Optimized ROLL into 1 procedure-> 10% less code!  
  22. '                          Started alg.'s for char sheet 
  23. '               23rd       Finished basic structure...it is huge 
  24. '               26th       Finished char gen sheet FRONT,needs more structure
  25. '  
  26. '------------------------------------------- 
  27. 'GENERAL 
  28. '
  29. 'Files Necessary to run: 
  30. '  Menu.pic                FinalRole.pic 
  31. '  Chargen.pic             Worldintro.anim 
  32. '  Roll.pic                Worldmap.pic
  33.  
  34. '------------------------------------------- 
  35. '             SET UP PROGRAM 
  36. 'Set memory, and reserve variables.
  37. 'Initialize variables. 
  38. '------------------------------------------- 
  39. Set Buffer 50
  40. Set Stack 250
  41. Global BDY,MND,SPT,AGL,HITS,HITSB,MANA,MANAB,PSI,PSIB,PP,CHP,CMP,CPP,MVMT,BUILDPOINTS
  42. Global DAM,MCAR,HEAL,SKB,PSIB,DEF,INIT,THT,MOV,SPS,SPD
  43. Global RACE$,CLASS$,PNAME$,CNAME$
  44. PP=0
  45. CLASS$="None"
  46. PNAME$="None"
  47. CNAME$="None"
  48. RACE$="None"
  49. '------------------------------------------- 
  50. '             SCREEN OPENING 
  51. '------------------------------------------- 
  52.  
  53. Auto View Off 
  54. Screen Open 0,640,200,8,Hires : Flash Off : Hide 
  55. Curs Off : Cls 0 : Paper 5 : Pen 4
  56. Palette $0,$FEE,$F,$8F,$B00,$41,$95,$FCA
  57. Screen Open 1,640,200,8,Hires : Flash Off : Hide 
  58. Curs Off : Cls 0 : Paper 5 : Pen 4
  59. '------------------------------------------- 
  60. '             INTRO WITH PAUSE CALL  
  61. '------------------------------------------- 
  62. Load Iff "finalrole.pic",1
  63. Wait Vbl 
  64. Appear 1 To 0,19
  65. PAUSE
  66. MENU:
  67. '------------------------------------------- 
  68. '             OPEN MENU SCREEN   
  69. '------------------------------------------- 
  70. Load Iff "menu.pic",1
  71. Screen 0
  72. Get Palette 1 : Set Text 6
  73.  
  74. TPAGE
  75. '
  76. 'Screen is now opened! 
  77. 'Time to show the buttons! 
  78. '
  79. MENU2:
  80.  
  81. Wait Vbl 
  82. Screen 0
  83. Show On 
  84. A$=A$+"BA 120,0:"
  85. A$=A$+"BUtton   1,50,40,158,12,0,0,1;[IN 7,0,0;GB BP,BP,BP158+,BP12+;IN 0,0,0;GS BP,BP,BP158+,BP12+;PR BP8+,BP3+,'Generate Character',0;][BR 0;]"
  86. A$=A$+"BUtton   2,60,60,136,12,0,0,1;[IN 2,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Load Character',0;][BR 0;]"
  87. A$=A$+"BUtton   3,60,80,136,12,0,0,1;[IN 2,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Save Character',0;][BR 0;]"
  88. A$=A$+"BUtton   4,60,100,136,12,0,0,1;[IN 2,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Print Character',0;][BR 0;]"
  89. A$=A$+"BUtton   5,275,40,145,12,0,0,1;[IN 7,0,0;GB BP,BP,BP145+,BP12+;IN 0,0,0;GS BP,BP,BP145+,BP12+;PR BP8+,BP3+,'World of Kryjel',0;][BR 0;]"
  90. A$=A$+"BUtton   6,280,60,136,12,0,0,1;[IN 7,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Edit Character',0;][BR 0;]"
  91. A$=A$+"BUtton   7,280,80,136,12,0,0,1;[IN 7,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'System Info',0;][BR 0;]"
  92. A$=A$+"BUtton   8,280,100,136,12,0,0,1;[IN 7,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Quit',0;][BR 0;]"
  93. A$=A$+"EX;"
  94. Dialog Open 1,A$ : 
  95. R=Dialog Run(1)
  96. Do 
  97.    P=Dialog(1)
  98.    Exit If P<0
  99.    If P=8 Then Goto FINISH
  100.    If P=5 Then Goto WORLD
  101.    If P=1 Then Goto GENCHAR
  102.    If P=2 Then Dialog Close 1 : Goto LCHAR
  103.    If P=3 Then Dialog Close 1 : Goto SCHAR
  104.    If P=4 Then Dialog Close 1 : Goto PCHAR
  105.    If P=6 Then Dialog Close 1 : Goto SHEET1
  106.    If P=7 Then Dialog Close 1 : Goto SYSINFO
  107.    Wait Vbl 
  108. Loop 
  109.  
  110. LCHAR:
  111. '------------------------------------------- 
  112. '             LOAD CHAR      
  113. '------------------------------------------- 
  114. Load Iff "Roll.pic",1
  115. Hide 
  116. TPAGE
  117. Screen 0
  118. Locate 0,12
  119. Pen 1
  120. Centre "This Option NOT Supported in this release..."
  121. PAUSE
  122. Goto MENU
  123.  
  124. SCHAR:
  125. '------------------------------------------- 
  126. '             SAVE CHAR      
  127. '------------------------------------------- 
  128. Load Iff "Roll.pic",1
  129. Hide 
  130. TPAGE
  131. Screen 0
  132. Locate 0,12
  133. Pen 1
  134. Centre "This Option NOT Supported in this release..."
  135. PAUSE
  136. Goto MENU
  137.  
  138. PCHAR:
  139. '------------------------------------------- 
  140. '             PRINT CHAR     
  141. '------------------------------------------- 
  142. Load Iff "CharGen.pic",1
  143. Hide 
  144. TPAGE
  145. Screen 0
  146. Locate 0,12
  147. Pen 1
  148. Centre "This Option NOT Supported in this release..."
  149. PAUSE
  150. Goto MENU
  151.  
  152. SYSINFO:
  153. '------------------------------------------- 
  154. '             MY RPG!!       
  155. '------------------------------------------- 
  156.  
  157. Screen Open 2,640,400,4096,Laced+Lowres : Flash Off : Hide 
  158. Curs Off : Cls 0 : Paper 0 : Pen 4
  159. Load Iff "Sorcerer.pic",2
  160. View 
  161. '\\\\\\\\\\\\\\\\INSERT TEXT STUFF HERE!!!!!///////////////////////
  162. Set Text 6
  163. Wait 100
  164. For S=1 To 10
  165.    For N=1 To 11
  166.       Locate 0,8 : Centre Border$("FINAL ROLE",N)
  167.       Locate 0,10 : Centre Border$("R.P.G.",N)
  168.       Wait Vbl : Pen 5 : Paper 11
  169.    Next N
  170. Next S
  171. Wait 60
  172.  
  173. Locate 0,13 : Centre Border$(" Copyright ï¿½ Mike Baron 1996 ",5)
  174. Wait 60
  175. Pen 3
  176. Locate 0,17 : Print "                                        "
  177. Locate 0,18 : Print " This demo was written as an aid for my "
  178. Locate 0,19 : Print "Role Playing Game (RPG). The following  "
  179. Locate 0,20 : Print "are features of my unique RPG which I   "
  180. Locate 0,21 : Print "have spent years developing...          "
  181. Locate 0,22 : Print "                                        "
  182. Wait 200 : Pen 5
  183. Locate 0,23 : Print " * Skill Based Character System         "
  184. Wait 30 : Pen 5
  185. Locate 0,24 : Print " * Interactive Playing & Moderation     "
  186. Wait 30 : Pen 5
  187. Locate 0,25 : Print " * Luck Pool                            "
  188. Wait 30 : Pen 5
  189. Locate 0,26 : Print " * Normal To Super-Heroic Characters    "
  190. Wait 30 : Pen 5
  191. Locate 0,27 : Print " * Software Character Generation        "
  192. Wait 30 : Pen 5
  193. Locate 0,28 : Print " * Unique World Of KRYJEL               "
  194. Wait 30 : Pen 5
  195. Locate 0,29 : Print " * User Support Via E-Mail              "
  196. Wait 30 : Pen 5
  197. Locate 0,30 : Print " * 'Universal Compatability' ;-)        "
  198. Wait 360 : Pen 10
  199. Locate 0,36 : Centre "                                "
  200. Locate 0,38 : Centre "                                "
  201. Locate 0,37 : Centre Border$(" E-Mail arcanum@users.dzn.com ",5)
  202.  
  203. Wait 300
  204. Screen Close 2
  205. Screen Close 1
  206. Screen Open 1,640,200,8,Hires : Flash Off : Hide 
  207. Curs Off : Cls 0 : Paper 5 : Pen 4
  208. Goto MENU2
  209.  
  210. GENCHAR:
  211. '------------------------------------------- 
  212. '             GENCHAR!     
  213. '------------------------------------------- 
  214. CLRSTATS
  215. Dialog Close 1
  216. Load Iff "CharGen.pic",1
  217. Screen 0
  218. TPAGE
  219. Locate 0,1
  220. Pen 2 : Paper 0
  221. Centre "CHOOSE YOUR FATE"
  222. Paper 1
  223. Locate 11,14
  224. Print "9D10 (9-90 Build Points)"
  225. Locate 45,14
  226. Print "5D10+25 (30-75 Build Points)"
  227. Locate 27,20
  228. Print "50 Build Points (No Roll!)"
  229. Locate 27,5
  230. Print "11D10+140 (151-250 Build Points)"
  231. Rem ***************MAIN     GENERATOR!!!!******************
  232. B$=B$+"BA 130,0:"
  233. B$=B$+"BUtton   1,0,95,110,12,0,0,1;[IN 1,0,0;GB BP,BP,BP110+,BP12+;IN 0,0,0;GS BP,BP,BP110+,BP12+;PR BP8+,BP3+,'RISKY METHOD',0;][BR 0;]"
  234. B$=B$+"BUtton   2,280,95,132,12,0,0,1;[IN 1,0,0;GB BP,BP,BP132+,BP12+;IN 0,0,0;GS BP,BP,BP132+,BP12+;PR BP8+,BP3+,'STANDARD METHOD',0;][BR 0;]"
  235. B$=B$+"BUtton   3,142,140,102,12,0,0,1;[IN 1,0,0;GB BP,BP,BP102+,BP12+;IN 0,0,0;GS BP,BP,BP102+,BP12+;PR BP8+,BP3+,'SAFE METHOD',0;][BR 0;]"
  236. B$=B$+"BUtton   4,142,25,110,12,0,0,1;[IN 1,0,0;GB BP,BP,BP110+,BP12+;IN 0,0,0;GS BP,BP,BP110+,BP12+;PR BP8+,BP3+,'SUPER METHOD',0;][BR 0;]"
  237. B$=B$+"EX;"
  238. Dialog Open 2,B$ : 
  239. R=Dialog Run(2)
  240. Do 
  241.    P=Dialog(2)
  242.    Exit If P<0
  243.    If P=1 : BUILDPOINTS=0 : ROLLNUM=9 : GEN[BUILDPOINTS,ROLLNUM] : PAUSE : Dialog Close 2 : Goto SHEET1
  244.    Else If P=2 : BUILDPOINTS=25 : ROLLNUM=5 : GEN[BUILDPOINTS,ROLLNUM] : PAUSE : Dialog Close 2 : Goto SHEET1
  245.    Else If P=3 : BUILDPOINTS=50 : Dialog Close 2 : Goto SHEET1
  246.    Else If P=4 : BUILDPOINTS=140 : ROLLNUM=11 : GEN[BUILDPOINTS,ROLLNUM] : PAUSE : Dialog Close 2 : Goto SHEET1
  247.    Else 
  248.       Rem Do Nothing!
  249.       Wait Vbl 
  250.    End If 
  251. Loop 
  252. Goto MENU
  253.  
  254. Procedure GEN[BUILDPOINTS,ROLLNUM]
  255.    '------------------------------------------- 
  256.    '             ROLLER!        
  257.    '------------------------------------------- 
  258.    Dialog Clr 2
  259.    Load Iff "Roll.pic",1
  260.    Wait Vbl 
  261.    Appear 1 To 0,19
  262.    Screen 0
  263.    Hide 
  264.    Locate 0,11
  265.    Pen 1 : Writing 1,2
  266.    Print "Rolling Dice Now"
  267.    Flash 1,"(222,5)(0F0,5)(F00,5)(00F,5)"
  268.    For ROLL=1 To ROLLNUM : Rem RD10 roll! 
  269.       T=Rnd(40) : Rem Random timer 
  270.       For X=1 To T
  271.          BUILDTEMP=(Rnd(9)+1) : Rem 10-sider 
  272.          Wait Vbl 
  273.       Next X
  274.       BUILDPOINTS=BUILDPOINTS+BUILDTEMP
  275.       Locate 14+ROLL,11+ROLL
  276.       Print BUILDTEMP
  277.    Next ROLL
  278.    Flash Off 
  279.    Locate 53,11
  280.    Pen 3
  281.    Print "TOTAL BUILDPOINTS=";BUILDPOINTS
  282.    Paper 5
  283. End Proc
  284.  
  285. Procedure CLRSTATS
  286.    BDY=0 : MND=0 : SPT=0 : AGL=0 : HITS=0 : HITSB=0 : MANA=0 : MANAB=0
  287.    PSI=0 : PSIB=0 : PP=0 : CHP=0 : CMP=0 : CPP=0 : MVMT=0 : BUILDPOINTS=0
  288.    DAM=0 : MCAR=0 : HEAL=0 : SKB=0 : PSIB=0 : DEF=0 : INIT=0 : THT=0
  289.    MOV=0 : SPS=0 : SPD=0
  290.    PP=0
  291.    CLASS$="None"
  292.    PNAME$="None"
  293.    CNAME$="None"
  294.    RACE$="None"
  295. End Proc
  296.  
  297.  
  298. SHEET1:
  299. '------------------------------------------- 
  300. '             GENCHAR!...uhhh sheet 1!     
  301. '------------------------------------------- 
  302. Load Iff "frontsheet.pic",1
  303. Wait Vbl 
  304. Appear 1 To 0,19
  305. Screen 0
  306. Show On 
  307. Pen 1 : Paper 7
  308. Locate 0,23
  309. Centre "{LEFT AND RIGHT MOUSE BUTTONS TO CHANGE STATS! (-/+)}"
  310. Rem ***************FRONT OF CHARACTER SHEET***************** 
  311. Locate 73,13 : Paper 5 : Pen 6 : Print " P2 "
  312. Locate 73,14 : Print " -> "
  313. Locate 3,13 : Print "MENU"
  314. Locate 3,14 : Print " <- "
  315. Rem     ***ZONE DATA***
  316. Reserve Zone 17
  317. XG=10 : YG=1 : XG2=35 : YG2=2 : Gosub TGRFX : Set Zone 1,GX,GY To GX2,GY2
  318. XG=10 : YG=2 : XG2=35 : YG2=3 : Gosub TGRFX : Set Zone 2,GX,GY To GX2,GY2
  319. XG=10 : YG=4 : XG2=20 : YG2=5 : Gosub TGRFX : Set Zone 3,GX,GY To GX2,GY2
  320. XG=35 : YG=4 : XG2=45 : YG2=5 : Gosub TGRFX : Set Zone 4,GX,GY To GX2,GY2
  321. XG=19 : YG=6 : XG2=30 : YG2=7 : Gosub TGRFX : Set Zone 5,GX,GY To GX2,GY2
  322. XG=19 : YG=7 : XG2=26 : YG2=8 : Gosub TGRFX : Set Zone 6,GX,GY To GX2,GY2
  323. XG=15 : YG=8 : XG2=26 : YG2=9 : Gosub TGRFX : Set Zone 7,GX,GY To GX2,GY2
  324. XG=16 : YG=9 : XG2=26 : YG2=10 : Gosub TGRFX : Set Zone 8,GX,GY To GX2,GY2
  325. XG=10 : YG=11 : XG2=26 : YG2=12 : Gosub TGRFX : Set Zone 9,GX,GY To GX2,GY2
  326. XG=26 : YG=11 : XG2=43 : YG2=12 : Gosub TGRFX : Set Zone 10,GX,GY To GX2,GY2
  327. XG=43 : YG=11 : XG2=62 : YG2=12 : Gosub TGRFX : Set Zone 11,GX,GY To GX2,GY2
  328. XG=10 : YG=15 : XG2=32 : YG2=16 : Gosub TGRFX : Set Zone 12,GX,GY To GX2,GY2
  329. XG=10 : YG=16 : XG2=25 : YG2=17 : Gosub TGRFX : Set Zone 13,GX,GY To GX2,GY2
  330. XG=10 : YG=17 : XG2=25 : YG2=18 : Gosub TGRFX : Set Zone 14,GX,GY To GX2,GY2
  331. XG=35 : YG=18 : XG2=45 : YG2=19 : Gosub TGRFX : Set Zone 15,GX,GY To GX2,GY2
  332. XG=73 : YG=13 : XG2=77 : YG2=15 : Gosub TGRFX : Set Zone 16,GX,GY To GX2,GY2
  333. XG=3 : YG=13 : XG2=7 : YG2=15 : Gosub TGRFX : Set Zone 17,GX,GY To GX2,GY2
  334.  
  335. M=0
  336. DISPLAY
  337. Locate 0,21 : Centre "Mouse Button = " : Locate 0,22 : Centre "Zone ="
  338.  
  339. Do 
  340.    M=Mouse Click
  341.    MZ=Mouse Zone
  342.    If M<>0 and MZ=17 Then Goto MENU
  343.    If M<>0 and MZ=16 Then Goto SHEET2
  344.    Locate 45,22
  345.    If MZ<10 Then Print "0";MZ Else Print MZ
  346.    If M<>0 Then POLLSTATS[MZ,M]
  347. Loop 
  348.  
  349. Procedure DISPLAY
  350.    Curs Off 
  351.    Paper 7 : Pen 5
  352.    Locate 10,1 : Print "Player Name:  ";PNAME$
  353.    Locate 10,2 : Print "Character Name:  ";CNAME$
  354.    Locate 10,4 : Print "MAIN STATS"
  355.    Locate 0,4 : Centre "MODIFIERS"
  356.    If BDY>9 : 
  357.       Locate 15,6 : Print "   BODY:";BDY;" Damage: ";DAM
  358.    Else If BDY<=9 : 
  359.       Locate 15,6 : Print "   BODY:";BDY;"  Damage: ";DAM
  360. Else : End If 
  361.    If MCAR<10
  362.       Locate 38,6 : Print "  MaxCarry: ";MCAR;"  #'s "
  363.    Else If MCAR<100
  364.       Locate 38,6 : Print "  MaxCarry: ";MCAR;" #'s "
  365.    Else 
  366.       Locate 38,6 : Print "  MaxCarry: ";MCAR;"#'s "
  367.    End If 
  368.    If HEAL<=0
  369.       Locate 57,6 : Print " Heal:";HEAL;" /week"
  370.    Else If HEAL<100
  371.       Locate 57,6 : Print " Heal:";HEAL;" /day "
  372.    Else 
  373.       Locate 57,6 : Print " Heal:";HEAL;"/day "
  374.    End If 
  375.    If MND>9 : 
  376.       Locate 15,7 : Print "   MIND:";MND;" Skill Checks: ";SKB;"  PSI Defense: ";PSIB;"D10"
  377.    Else If MND<=9 : 
  378.       Locate 15,7 : Print "   MIND:";MND;"  Skill Checks: ";SKB;"  PSI Defense: ";PSIB;"D10"
  379. Else : End If 
  380.    If AGL>9 : 
  381.       Locate 15,8 : Print "AGILITY:";AGL;" Def: ";DEF;" Init: ";INIT;" Hit: ";THT
  382.    Else If AGL<=9 : 
  383.       Locate 15,8 : Print "AGILITY:";AGL;"  Def: ";DEF;" Init: ";INIT;" Hit: ";THT
  384. Else : End If 
  385.    If MOV<10 : 
  386.       Locate 54,8 : Print "Move:+";MOV;" in/turn"
  387.    Else 
  388.       Locate 54,8 : Print "Move:+";MOV;"in/turn"
  389.    End If 
  390.    If SPT>9 : 
  391.       Locate 15,9 : Print " SPIRIT:";SPT;" Spell Bonus: ";SPS;"D10    Spell Def: ";SPD;"D10"
  392.    Else If SPT<=9 : 
  393.       Locate 15,9 : Print " SPIRIT:";SPT;"  Spell Bonus: ";SPS;"D10    Spell Def: ";SPD;"D10"
  394. Else : End If 
  395.    
  396.    If HITSB>99
  397.       Locate 10,11 : Print "Hit Points:";HITSB;
  398.    Else If HITSB>9
  399.       Locate 10,11 : Print "Hit Points: ";HITSB;
  400.    Else 
  401.       Locate 10,11 : Print "Hit Points:  ";HITSB;
  402.    End If 
  403.    If MANAB>99
  404.       Locate 27,11 : Print "Mana Points:";MANAB;
  405.    Else If MANAB>9
  406.       Locate 27,11 : Print "Mana Points: ";MANAB;
  407.    Else 
  408.       Locate 27,11 : Print "Mana Points:  ";MANAB;
  409.    End If 
  410.    If PSIB>99
  411.       Locate 44,11 : Print "PSI Potential:";PSIB
  412.    Else If PSIB>9
  413.       Locate 44,11 : Print "PSI Potential: ";PSIB
  414.    Else 
  415.       Locate 44,11 : Print "PSI Potential:  ";PSIB
  416.    End If 
  417.    If BUILDPOINTS>99 : 
  418.       Locate 25,13 : Print "Luck:";BUILDPOINTS
  419.    Else If BUILDPOINTS>9 : 
  420.       Locate 25,13 : Print "Luck:";BUILDPOINTS;" "
  421.    Else : 
  422.       Locate 25,13 : Print "Luck:";BUILDPOINTS;"  "
  423.    End If 
  424.  
  425.    If BUILDPOINTS<>0 : 
  426.       LPOOL=(Abs(BUILDPOINTS/5))+1
  427.    End If 
  428.    If BUILDPOINTS>44 : 
  429.       Locate 35,13 : Print "Luck Pool:";LPOOL;"D10 GOOD Luck  "
  430.    Else If BUILDPOINTS<-44 : 
  431.       Locate 35,13 : Print "Luck Pool:";LPOOL;"D10  BAD Luck  "
  432.    Else If BUILDPOINTS>-44 and BUILDPOINTS<0 : 
  433.       Locate 35,13 : Print "Luck Pool: ";LPOOL;"D10  BAD Luck  "
  434.    Else If BUILDPOINTS<44 and BUILDPOINTS>0 : 
  435.       Locate 35,13 : Print "Luck Pool: ";LPOOL;"D10 GOOD Luck  "
  436.    End If 
  437.  
  438.    If MVMT>9 : 
  439.       Locate 10,15 : Print "Movement Rate:";MVMT+((BDY+AGL)/2)+MOV;" inches/turn"
  440.    Else If MVMT<=9 : 
  441.       Locate 10,15 : Print "Movement Rate:";MVMT+((BDY+AGL)/2)+MOV;"  inches/turn"
  442. Else : End If 
  443.    Locate 10,16 : Print "Race:";RACE$;"        Racial Bonuses:"
  444.    Locate 10,17 : Print "Class:";CLASS$;"        Class Bonuses:"
  445.    Locate 0,18 : Centre "SKILLS"
  446. End Proc
  447.  
  448. Procedure POLLSTATS[MZ,M]
  449.    '------------------------------------------- 
  450.    '             POLL ALL STATS!        
  451.    '------------------------------------------- 
  452.    Locate 45,21
  453.    If M=1 Then Print " Left"
  454.    If M=2 Then Print "Right"
  455.    If MZ=1
  456.       Locate 22,1
  457.       Clear Key 
  458.       PNAME$=Input$(25)
  459.    Else If MZ=2
  460.       Locate 25,2
  461.       CNAME$=Input$(25)
  462.    Else If MZ=3
  463.       Locate 0,23 : Centre "IMPROVE YOUR MAIN STATS PLEASE!"
  464.       Wait 150
  465.       Pen 1 : Paper 7
  466.       Locate 0,23
  467.       Centre "{LEFT AND RIGHT MOUSE BUTTONS TO CHANGE STATS! (-/+)}"
  468.    Else If MZ=4
  469.       Locate 0,23 : Centre "THESE CHANGE AS MAIN STATS ARE CHANGED!"
  470.       Wait 150
  471.       Pen 1 : Paper 7
  472.       Locate 0,23
  473.       Centre "{LEFT AND RIGHT MOUSE BUTTONS TO CHANGE STATS! (-/+)}"
  474.    Else If MZ=5
  475.       If M=1 and BDY<>0 : SUBT[BDY]
  476.          BDY=Param
  477.       Else If M=2 : AD[BDY]
  478.          BDY=Param
  479.    Else : End If 
  480.    Else If MZ=6
  481.       If M=1 and MND<>0 : SUBT[MND]
  482.          MND=Param
  483.       Else If M=2 : AD[MND]
  484.          MND=Param
  485.    Else : End If 
  486.    Else If MZ=7
  487.       If M=1 and AGL<>0 : SUBT[AGL]
  488.          AGL=Param
  489.       Else If M=2 : AD[AGL]
  490.          AGL=Param
  491.    Else : End If 
  492.    Else If MZ=8
  493.       If M=1 and SPT<>0 : SUBT[SPT]
  494.          SPT=Param
  495.       Else If M=2 : AD[SPT]
  496.          SPT=Param
  497.    Else : End If 
  498.    Else If MZ=9
  499.       If M=1 and HITS=0 : Pop Proc
  500.       Else If M=1 : Dec HITS : BUILDPOINTS=BUILDPOINTS+2
  501.       Else If M=2 and BUILDPOINTS<2 : Pop Proc
  502.       Else : Inc HITS : BUILDPOINTS=BUILDPOINTS-2
  503.       End If 
  504.    Else If MZ=10
  505.       If M=1 and MANA=0 : Pop Proc
  506.       Else If M=1 : Dec MANA : BUILDPOINTS=BUILDPOINTS+3
  507.       Else If M=2 and BUILDPOINTS<3 : Pop Proc
  508.       Else : Inc MANA : BUILDPOINTS=BUILDPOINTS-3
  509.       End If 
  510.    Else If MZ=11
  511.       If M=1 and PSI=0 : Pop Proc
  512.       Else If PP=0 : Pop Proc
  513.       Else If M=1 : Dec PSI : BUILDPOINTS=BUILDPOINTS+3
  514.       Else If M=2 and BUILDPOINTS<3 : Pop Proc
  515.       Else : Inc PSI : BUILDPOINTS=BUILDPOINTS-3
  516.       End If 
  517.    Else If MZ=12
  518.       If M=1 and MVMT=0 : Pop Proc
  519.       Else If M=1 : Dec MVMT : BUILDPOINTS=BUILDPOINTS+2
  520.       Else If M=2 and BUILDPOINTS<2 : Pop Proc
  521.       Else : Inc MVMT : BUILDPOINTS=BUILDPOINTS-2
  522.       End If 
  523.    Else If MZ=13
  524.       Locate 15,16
  525.       If RACE$="none" : Print "New Race!"
  526.       Else If RACE$="New Class!" : Print "Old Race!"
  527.       Else If RACE$="Old Race!" : Print "New Race!"
  528.    Else : End If 
  529.    Else If MZ=14
  530.       Locate 16,17
  531.       If CLASS$="none" : Print "New Class!"
  532.       Else If CLASS$="New Class!" : Print "Old Class!"
  533.       Else If CLASS$="Old Class!" : Print "New Class!"
  534.    Else : End If 
  535.    Else If MZ=15
  536.    End If 
  537.    Rem *Calculate modified stats* 
  538.    Rem BODY 
  539.    If(BDY>4 and BDY<10) or BDY=0 Then DAM=0
  540.    If BDY<5 and BDY>0 Then DAM=-(5-BDY)
  541.    If BDY=10 Then DAM=1
  542.    If BDY=15 Then DAM=2
  543.    If BDY=18 Then DAM=3
  544.    If BDY>19 Then DAM=4+(BDY-20)
  545.    MCAR=BDY*20 : HEAL=DAM
  546.    Rem MIND 
  547.    If(MND>4 and MND<10) or MND=0 Then SKB=0
  548.    If MND<5 and MND>0 Then SKB=-(5-MND)
  549.    If MND=10 Then SKB=1
  550.    If MND=15 Then SKB=2
  551.    If MND=18 Then SKB=3
  552.    If MND>19 Then SKB=4+(MND-20)
  553.    If PSI<>0 Then PSIB=SKB
  554.    Rem AGILITY
  555.    If(AGL>4 and AGL<10) or AGL=0 Then DEF=0
  556.    If AGL<5 and AGL>0 Then DEF=-(5-AGL)
  557.    If AGL=10 Then DEF=1
  558.    If AGL=15 Then DEF=2
  559.    If AGL=18 Then DEF=3
  560.    If AGL>19 Then DEF=4+(AGL-20)
  561.    INIT=DEF
  562.    THT=INIT
  563.    MOV=Max(INIT,0)
  564.    Rem Spirit 
  565.    If(SPT>4 and SPT<10) or SPT=0 Then SPD=0
  566.    If SPT<5 and SPT>0 Then SPD=-(5-SPT)
  567.    If SPT=10 Then SPD=1
  568.    If SPT=15 Then SPD=2
  569.    If SPT=18 Then SPD=3
  570.    If SPT>19 Then SPD=4+(SPT-20)
  571.    If SPT>9 Then SPS=SPD
  572.    If SPT<10 Then SPS=0
  573.    Rem Secondary Stats
  574.    HITSB=HITS+(BDY+MND+SPT+AGL)
  575.    MANAB=MANA+((MND+SPT)/2)
  576.    PSIB=PSI+(PSI*(MND))
  577.    DISPLAY
  578. End Proc
  579.  
  580. Procedure SUBT[STAT]
  581.    If STAT=<5 : CST=1
  582.    Else If STAT=<10 : CST=2
  583.    Else If STAT=<15 : CST=3
  584.    Else If STAT=<20 : CST=4
  585. Else CST=5 : End If 
  586.    Dec STAT : BUILDPOINTS=BUILDPOINTS+CST
  587. End Proc[STAT]
  588.  
  589. Procedure AD[STAT]
  590.    If STAT<5 : CST=1
  591.    Else If STAT<10 : CST=2
  592.    Else If STAT<15 : CST=3
  593.    Else If STAT<20 : CST=4
  594. Else CST=5 : End If 
  595.    '       Negative B.P. not allowed if following line is INCLUDED! 
  596.    '       If BUILDPOINTS<CST Then Pop Proc 
  597.    Inc STAT : BUILDPOINTS=BUILDPOINTS-CST
  598. End Proc[STAT]
  599.  
  600. SHEET2:
  601. '------------------------------------------- 
  602. '             GENCHAR!...uhh side 2!     
  603. '------------------------------------------- 
  604. Load Iff "backsheet.pic",1
  605. Wait Vbl 
  606. Appear 1 To 0,19
  607. Screen 0
  608. Show On 
  609. Paper 5 : Pen 6
  610. Locate 3,13 : Print " P1 "
  611. Locate 3,14 : Print " <- "
  612. Rem     ***ZONE DATA***
  613. Reset Zone 
  614. Reserve Zone 17
  615. XG=28 : YG=3 : XG2=52 : YG2=4 : Gosub TGRFX : Set Zone 1,GX,GY To GX2,GY2
  616. XG=35 : YG=9 : XG2=45 : YG2=10 : Gosub TGRFX : Set Zone 2,GX,GY To GX2,GY2
  617. XG=30 : YG=17 : XG2=50 : YG2=18 : Gosub TGRFX : Set Zone 3,GX,GY To GX2,GY2
  618. XG=3 : YG=13 : XG2=7 : YG2=15 : Gosub TGRFX : Set Zone 4,GX,GY To GX2,GY2
  619.  
  620. M=0
  621. DISPLAY2
  622. Locate 0,21 : Centre "Mouse Button = " : Locate 0,22 : Centre "Zone ="
  623. Do 
  624.    M=Mouse Click
  625.    MZ=Mouse Zone
  626.    If M<>0 and MZ=4 Then Goto SHEET1
  627.    Locate 45,22
  628.    If MZ<10 Then Print "0";MZ Else Print MZ
  629.    If M<>0 and MZ=1 Then PSIFUN
  630.    If M<>0 and MZ=2 Then STORE
  631.    If M<>0 and MZ=3 Then INFO
  632. Loop 
  633.  
  634. Procedure PSIFUN
  635.    Paper 4 : Pen 7
  636.    Locate 0,3 : Centre "Spells/Psionics/Powers"
  637.    Wait Vbl 
  638.    Paper 7 : Pen 5
  639.    Locate 0,3 : Centre "Spells/Psionics/Powers"
  640. End Proc
  641.  
  642. Procedure STORE
  643.    Wait Vbl 
  644.    Paper 7 : Pen 5
  645.    Locate 0,9 : Centre "Equipment"
  646. End Proc
  647.  
  648. Procedure INFO
  649.    Wait Vbl 
  650.    Paper 7 : Pen 5
  651.    Locate 0,19 : Centre "(not implemented yet)"
  652. End Proc
  653.  
  654. Procedure DISPLAY2
  655.    Curs Off 
  656.    Paper 7 : Pen 5
  657.    Locate 0,3 : Centre "Spells/Psionics/Powers"
  658.    Locate 0,9 : Centre "Equipment"
  659.    Locate 10,10 : Print "Name         Weight Location"
  660.    Locate 42,10 : Print "Name         Weight Location"
  661.    Locate 0,17 : Centre "Additional Information"
  662. End Proc
  663.  
  664. TGRFX:
  665. '------------------------------------------- 
  666. '             Convert Coordinates!         
  667. '------------------------------------------- 
  668. GX=X Graphic(XG) : GY=Y Graphic(YG) : GX2=X Graphic(XG2) : GY2=Y Graphic(YG2)
  669. Return 
  670.  
  671. WORLD:
  672. '------------------------------------------- 
  673. '             SHOW MAPS WITH PAUSE     
  674. '------------------------------------------- 
  675. Dialog Close 1
  676. Hide 
  677. Load Iff "Worldmap.pic",1
  678. MAP
  679. PAUSE
  680. Goto MENU
  681.  
  682. FINISH:
  683. Edit 
  684.  
  685. Procedure MAP
  686. '------------------------------------------- 
  687. '             Load Map     
  688. 'Scroll iff from screen 1 across screen 0 !  
  689. 'This requires an X-axis flipped image 
  690. 'in screen 2.
  691. '------------------------------------------- 
  692. Screen 0
  693. Get Palette 1
  694. For MAP=0 To 590 Step 8
  695.    Screen 1
  696.    Get Block 1,(590-MAP),0,50,200
  697.    Hrev Block 1
  698.    Screen 0
  699.    Put Block 1,(640-MAP),0
  700.    If MAP>64 Then Screen Copy 1,704-MAP,0,712-MAP,200 To 0,704-MAP,0
  701. Next MAP
  702. For MAPEND=104 To 0 Step -8
  703.    Screen Copy 1,MAPEND,0,MAPEND+20,200 To 0,MAPEND,0
  704.    Wait Vbl 
  705. Next MAPEND
  706. Wait 100
  707. Rem ***Load Color Map And Appear!*** 
  708. Load Iff "world.pic",1
  709. Wait Vbl 
  710. Screen 0
  711. Get Palette 1
  712. Appear 1 To 0,19
  713. End Proc
  714. Procedure TPAGE
  715. '------------------------------------------- 
  716. '            Turn Page!  
  717. 'Turns Page stored in screen 1 across  
  718. 'screen 0 from right to left. Hires 640x400  
  719. '(NOT INTERLACED!) 
  720. '------------------------------------------- 
  721. XW=0
  722. Rem Quick Fix for 2.5 pixels missing on right side of screen!
  723. Screen Copy 1,637,0,640,200 To 0,637,0
  724. For MAP=1 To 64 : Rem Sets # of screen copies 1 to X1    
  725.    XW=XW+5 : Rem xw=xw+X2   where X1*X2=(screen width)/2  
  726.    Screen Copy 1,0,0,XW,200 To 0,(640-(2*XW)),0 : Rem copy left screen 1 
  727.    Screen Copy 1,(640-XW),0,(640-(XW/2)),200 To 0,(640-XW),0 : Rem copy right screen 1  
  728. Next MAP
  729. Wait Vbl 
  730. End Proc
  731. Procedure PAUSE
  732.    '--------------------------------------------------------
  733.    'This routine will prompt user to click mouse to continue
  734.    'and allows immediate exit before prompt! Current Screen 
  735.    'must be 0!
  736.    '--------------------------------------------------------
  737.    TC=0
  738.    Screen 0
  739.    For PAUSE=1 To 350
  740.       Wait 1
  741.       If Mouse Click<>0 Then Pop Proc
  742.    Next PAUSE
  743.    While Mouse Click=0
  744.       TC=TC+1
  745.       If TC=8 Then TC=0
  746.       Locate ,24
  747.       Pen TC
  748.       Centre "Press Mouse Button To Continue..."
  749.       Wait 10
  750.    Wend 
  751. End Proc